package me.yangzhi.day_17;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.github.mikephil.charting.formatter.ValueFormatter;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 启用沉浸式状态栏（可选，提升界面美观）
        EdgeToEdge.enable(this);
        // 设置当前 Activity 的布局文件
        setContentView(R.layout.activity_main);
        // 处理系统窗口（状态栏、导航栏）与布局的间距，防止内容被遮挡
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        // ================== 柱状图 BarChart ==================
        // 1. 获取布局中的 BarChart 控件
        BarChart barChart = findViewById(R.id.barChart);
        // 2. 构造柱状图的数据（BarEntry：x轴为序号，y轴为国土面积，单位：万平方公里）
        java.util.List<BarEntry> barEntries = new java.util.ArrayList<>();
        barEntries.add(new BarEntry(1, 1709.8f)); // 俄罗斯
        barEntries.add(new BarEntry(2, 998.5f));  // 加拿大
        barEntries.add(new BarEntry(3, 960.0f));  // 中国
        barEntries.add(new BarEntry(4, 937.3f));  // 美国
        barEntries.add(new BarEntry(5, 851.6f));  // 巴西
        // 3. 创建数据集对象，并设置标签
        BarDataSet barDataSet = new BarDataSet(barEntries, "主要国家国土面积（万平方公里）");
        // 4. 设置柱状图的颜色模板
        barDataSet.setColors(ColorTemplate.MATERIAL_COLORS);
        // 5. 设置每个柱子的标签（国家名称）
        final String[] countries = new String[]{"", "俄罗斯", "加拿大", "中国", "美国", "巴西"};
        barDataSet.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return String.format("%.1f", value);
            }
        });
        BarData barData = new BarData(barDataSet);
        barChart.setData(barData);
        // 设置X轴标签
        barChart.getXAxis().setValueFormatter(new ValueFormatter() {
            @Override
            public String getAxisLabel(float value, com.github.mikephil.charting.components.AxisBase axis) {
                int index = (int) value;
                if (index >= 1 && index <= 5) return countries[index];
                return "";
            }
        });
        barChart.getXAxis().setGranularity(1f);
        barChart.getXAxis().setLabelCount(5);
        // 6. 设置图表描述文字
        barChart.getDescription().setText("主要国家国土面积");
        // 7. 添加动画效果
        barChart.animateY(1000);

        // ================== 饼图 PieChart ==================
        // 1. 获取布局中的 PieChart 控件
        PieChart pieChart = findViewById(R.id.pieChart);
        // 2. 构造饼图的数据（PieEntry：value为面积，label为国家）
        java.util.List<PieEntry> pieEntries = new java.util.ArrayList<>();
        pieEntries.add(new PieEntry(1709.8f, "俄罗斯"));
        pieEntries.add(new PieEntry(998.5f, "加拿大"));
        pieEntries.add(new PieEntry(960.0f, "中国"));
        pieEntries.add(new PieEntry(937.3f, "美国"));
        pieEntries.add(new PieEntry(851.6f, "巴西"));
        // 3. 创建数据集对象，并设置标签
        PieDataSet pieDataSet = new PieDataSet(pieEntries, "主要国家国土面积占比");
        // 4. 设置饼图的颜色模板
        pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
        // 5. 创建 PieData 并设置到 PieChart
        PieData pieData = new PieData(pieDataSet);
        pieData.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return String.format("%.1f", value);
            }
        });
        pieChart.setData(pieData);
        // 6. 设置图表描述文字
        pieChart.getDescription().setText("主要国家国土面积占比");
        // 7. 添加动画效果
        pieChart.animateY(1000);
    }
}